From 5e533db33ef0099a47524cbc9979af2c6f9e6bb4 Mon Sep 17 00:00:00 2001 From: robertl Date: Sun, 15 Oct 2006 22:51:51 +0000 Subject: [PATCH] Propogate USB error in libusb (Linux, Mac) up the stack so realtime positioning code can error out gracefully. Fix minor mem leak in Garmin USB position read case. --- garmin.c | 6 ++++++ jeeps/gpsusbread.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/garmin.c b/garmin.c index d51bb5a48..3f74b8088 100644 --- a/garmin.c +++ b/garmin.c @@ -481,6 +481,12 @@ pvt_read(void) return wpt; } + if (gps_errno) { + fatal(MYNAME ": Fatal error reading position.\n"); + } + + GPS_Pvt_Del(&pvt); + return NULL; } diff --git a/jeeps/gpsusbread.c b/jeeps/gpsusbread.c index 1cdce1df2..e266011dd 100644 --- a/jeeps/gpsusbread.c +++ b/jeeps/gpsusbread.c @@ -40,7 +40,12 @@ do_over: n = gusb_cmd_get(&pkt, sizeof(pkt)); if ( n < 0 ) { -fprintf(stderr, "Eeek %d\n", n); + /* + * We (probably) used to have a GPS and it went away + * while we were speaking with it. Perhaps batteries + * died or it was unplugged or something. + */ + gps_errno = PROTOCOL_ERROR; return n; } -- 2.30.2